package org.rockyang.dike.core.impl;


import org.rockyang.dike.core.AuthenticationInfo;
import org.rockyang.dike.core.AuthorizationRealm;

import java.util.HashMap;

/**
 * 身份认证信息封装实体, 考虑到如果业务端使用多个认证域的情况下会返回多个 AuthenticationInfo 实体，所以这里封装一下。
 * @author yangjian
 */
public class AuthenticationInfoEntity {

    private HashMap<String, AuthenticationInfo> infos = new HashMap<>();

    public void addAuthenticationInfo(AuthenticationInfo info) {

        if (null == info) {
            return;
        }
        //第一个加入进来的默认为主要身份凭证
        if  ( infos.isEmpty() ) {
            infos.put(AuthorizationRealm.PRIMARY_REALM_NAME, info);
        } else {
            infos.put(info.getRealmName(), info);
        }
    }

    /**
     * 根据域的名称获取指定的身份认证，如果没有则返回主要的身份认证
     * @param realmName
     * @return
     */
    public AuthenticationInfo getAuthenticationInfo(String realmName) {
        if (null == infos.get(realmName)) {
            return this.getPrimaryAuthenticationInfo();
        } else {
            return infos.get(realmName);
        }
    }

    /**
     * 获取主要的身份凭证信息, 默认第一个加进来的就是主要凭证
     * @return
     */
    public AuthenticationInfo getPrimaryAuthenticationInfo() {
        return infos.get(AuthorizationRealm.PRIMARY_REALM_NAME);
    }
}
